iT邦幫忙

domain-driven design相關文章
共有 52 則文章
鐵人賽 Software Development DAY 30

技術 [DAY30] DDD學習資源與完賽感言

DDD 學習資源 ddd-crew裡面有許多關於 DDD 各個面向的 repo,其中這個 repo 有提供一套完整的方法教你怎麼樣開始導入 DDD。 DD...

鐵人賽 Software Development DAY 29

技術 [DAY29] 總回顧

導入 DDD 後專案真的有變比較好嗎? 從測試的角度 之前的篇章中有提到,舊有測試都是以 controller 和頁面文字進行測試,因此可以視為測試覆蓋率為...

鐵人賽 Software Development DAY 28

技術 [DAY28] 戰略設計的彆扭事件

上一篇提到,要深入瞭解需求,需要大量的溝通,對應到 DDD 中非常重要的一環——與領域專家一同開會。理想情況是,聚集所有利害關係人,透過事件風暴確認需求後再開發...

鐵人賽 Software Development DAY 27

技術 [DAY27] 功能型團隊 VS 需求型團隊

前面的篇章大部分著重 DDD 的戰術設計,這篇來說說戰略設計。 功能型團隊 在導入 DDD 前,我們審視後發現,過去的開發項目並沒有完全滿足其他部門的需求,導致...

鐵人賽 Software Development DAY 26

技術 [DAY26] 導入 DDD 時尚未深究的問題

這篇羅列導入 DDD 時遇到的困難,以及針對這些問題,在團隊內還沒有確切設計共識時,我們的處理方式。 Ransack Ransack 依賴 ActiveReco...

鐵人賽 Software Development DAY 25

技術 [DAY25] Boxenn 小結

將幾篇 Boxenn 相關文章整理成分類目錄(範例 GitHub repository 建置中,完成後也會放在這裡): Boxenn 設計理念 Data A...

鐵人賽 Software Development DAY 24

技術 [DAY24] Boxenn Use Case 的 error handle

Boxenn 的 error handling Boxenn 的實作可以在這邊複習。 Use Case 中的 error 可以分為兩種,可預期的錯誤和不可預期的...

鐵人賽 Software Development DAY 23

技術 [DAY23] Boxenn Use Case & Validation

在 Boxenn::UseCase 中處理 validation? dry-monads 中有提供 validate 的功能,他的特色是不會中斷執行,而是等到所...

鐵人賽 Software Development DAY 22

技術 [DAY22] Boxenn Use Case Spec

Use Case Spec 這邊以之前的 use case 當作例子來撰寫測試。 首先要能快速地建立測資,需要透過 Factory Bot 制定規則。 # or...

鐵人賽 Software Development DAY 21

技術 [DAY21] 非同步的 Boxenn Use Case

在實務中,常常會有花很長執行時間、或需要排程的邏輯,這時候便會需要進行非同步處理。 在 Boxenn Use Case 上擴充 sidekiq worker s...

鐵人賽 Software Development DAY 20

技術 [DAY20] Domain 間的依賴關係

Domain 間的依賴 在專案中,除了 domain 內上下層的關係外,domain 之間也會有依賴關係,而為了不讓 domain 間過度耦合,我們透過 wis...

鐵人賽 Software Development DAY 19

技術 [DAY19] Boxenn 實作 Use Case

Use Case 定義對外唯一的 method call 利用 dry-monads 的特性處理預期及非預期錯誤 use case 內利用 steps 拆...

鐵人賽 Software Development DAY 18

技術 [DAY18] Use Case 設計概念

緣起 Use Case 的職責是把業務邏輯封裝,一個 Use Case 大致可以對應到一個 User Story。一開始我們對 Use Case 要怎麼設計並沒...

鐵人賽 Software Development DAY 17

技術 [DAY17] 關於 DAL 的一些問題

Q: 為甚麼原本 ActiveRecord 提供的 ORM 不用,要再包一層自己的 ORM? 在本系列的第2~5篇中有稍微提到過,這邊列點整理 Model 沒...

鐵人賽 Software Development DAY 16

技術 [DAY16] Data Access Layer 測試

準備工作 在開始介紹如何測試 repository 之前,要先帶過有使用的一些套件本系列文章以 Rspec 作為測試用的框架,並且有使用 FactoryBot...

鐵人賽 Software Development DAY 15

技術 [Day15] Boxenn 實作 Repository & Query

Repository 將 source wrapper 、 record mapper 、 factory 都完成後,在 repository 裡只需要簡單的歸...

鐵人賽 Software Development DAY 14

技術 [Day14] Boxenn 實作 Source Wrapper

Source Wrapper source wrapper 的職責很簡單,他負責將外部資源的介面轉換給 Boxenn::Repository 使用。在 Boxe...

鐵人賽 Mobile Development DAY 24

技術 初探 Domain driven design

Domain Driven Design 是一個最近開始在台灣紅起來的一種設計以及開發方式,他的出現主要是為了解決大型專案中複雜的領域問題,透過與領域專家對話,...

鐵人賽 Software Development DAY 13

技術 [Day13] 擴充 Boxenn 的 Record Mapper

擴充 Record Mapper 大部分 domain 的 mapper 皆為 key 的轉換,而在此範例中使用的外部資源為 ActiveRecord,他大部分...

鐵人賽 Software Development DAY 12

技術 [Day12] Boxenn 實作 Record Mapper 與 Factory

建議搭配之前的 sequence diagram 一起服用! Dry Initializer 在進到 Record Mapper 和 Factory 之前,先來...

鐵人賽 Software Development DAY 11

技術 [DAY11] Data Access Layer 設計概念

前言 這篇將介紹 boxenn 與 DAL 層的依賴關係和介面。 簡易 Class Diagram Source 代表的是外部 gem 的 class,本系列...

鐵人賽 Software Development DAY 10

技術 [Day10] Boxenn 實作 Aggregate 和 Aggregate Root

原則 對於 domain 內的 aggregate,有以下的原則我們會遵守 一個 domain 內只有一組 agrregate 所有對資料的更動必須要整個物件...

鐵人賽 Software Development DAY 9

技術 [DAY9] Boxenn 實作 Entity 與 Value Object

隆重介紹 Boxenn!它是我們專門用來在 legacy code 中導入 DDD 的套件,之後會花不小的篇幅來介紹每個 class 的設計理念對應到 DDD...

鐵人賽 Software Development DAY 8

技術 [DAY8] 與 ActiveRecord 分手

先來看看目前我們專案的資料夾結構: 前面有提到,ActiveRecord 所建立的 model 與 schema 會直接互相綁定,要擺脫這個限制、重新建立 d...

鐵人賽 Software Development DAY 6

技術 [DAY6] 萬事起頭難

找救援 意識到有問題時,首先尋找有沒有專案遇到同樣的問題——有使用 Ruby on Rails 的大規模專案不少,那為何不會浮現這些問題,代表我們肯定是有哪個環...

鐵人賽 Software Development DAY 5

技術 [DAY5] 病識感──當我們關注到測試

能載舟,能覆舟 前幾篇似乎說了很多 Rails 的壞話,但其實 Rails 是一套工具,工具沒有好壞之分,只有是否適合、怎麼使用。Rails 最重要的設計理念是...

鐵人賽 Software Development DAY 4

技術 [DAY4] 一塊大千層蛋糕 — MVC 架構的橫切分層,以及為何需要縱切

先來看看一個預設 Rails 專案的預設資料夾結構: 我們可以看到,他遵循著 MVC 架構,將各自的檔案分別放到不同的資料夾裡 單體式應用程式 (Monolit...

鐵人賽 Software Development DAY 3

技術 [DAY3] MVC與散落各處的邏輯

上回說到 Fat Model 的邏輯散落在各處,那這回就要來說說散落在哪、以及造成這種現象的原因。 Rails 的 MVC MVC(Model–View–Con...

鐵人賽 Software Development DAY 2

技術 [DAY2] 聽說 Rails 開發很快速?

先來介紹一點關於 Ruby on Rails 這個框架 ,他採用了 ORM 來處理 Ruby 和資料庫的關係。 ORM 是什麼? ORM 全名是 Object-...

鐵人賽 Software Development DAY 1

技術 [DAY1] 在開始之前

Hello 大家好,我是陽光伏特家的工程師 Oscar,這是我第一次參加鐵人賽!每年都想報名結果每年都拖到忘記 本系列文章將會分享關於我和我的同事們怎麼解決 R...